Skip to content

OCPBUGS-99534: etcd initialization bugs after etcdctl snapshot restore#9048

Open
tony-schndr wants to merge 3 commits into
openshift:mainfrom
tony-schndr:fix/etcd-snapshot-restore-init
Open

OCPBUGS-99534: etcd initialization bugs after etcdctl snapshot restore#9048
tony-schndr wants to merge 3 commits into
openshift:mainfrom
tony-schndr:fix/etcd-snapshot-restore-init

Conversation

@tony-schndr

@tony-schndr tony-schndr commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

What this PR does / why we need it:

Fix etcd split brain caused by single member initialization.

  • Previously etcd members were being started without any information about the other members in the etcd cluster causing each member to be started individually. added --name --initial-advertise-peer-urls --initial-cluster --initial-cluster-token to etcdctl (and utl) snapshot restore to ensure etcd members are properly initialized during restore.

Fix member ID mismatch on snapshot restore by running etcd-init before reset-member.

  • Previously, reset-member ran first and, if the cluster was already up, would remove and re-add the local member with a new ID. etcd-init then restored the snapshot with the old member ID, causing a WAL/cluster membership mismatch and CrashLoopBackOff. Running etcd-init first ensures the data directory exists when reset-member runs, so it takes the no-op "member has data" path and leaves membership unchanged.

Adds --bump-revision 1000000000 --mark-compacted flags to etcdctl|etcdutl snapshot restore to ensure etcd object revisions are always greater than any revision the cluster has seen. This ensures that all watches are terminated and etcd does not respond to requests about revisions that happened after taking the snapshot - effectively invalidating its informer caches. ref https://etcd.io/docs/v3.5/op-guide/recovery/

Which issue(s) this PR fixes:

Fixes OCPBUGS-99310

Special notes for your reviewer:

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

Summary by CodeRabbit

  • Bug Fixes
    • Improved managed etcd snapshot restoration so each pod restores with a unique peer identity and consistent initial cluster settings.
    • Corrected etcd StatefulSet init-container sequencing so snapshot restore runs before reset-member when restoration is enabled.
  • Tests
    • Added fixture coverage for the default feature set with etcd snapshot restore.
    • Expanded checks for generated etcd init-container environment values and added test coverage for restore-related init-container ordering.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: LGTM mode

@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jul 21, 2026
@openshift-ci

openshift-ci Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@openshift-ci openshift-ci Bot added do-not-merge/needs-area needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. labels Jul 21, 2026
@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The etcd StatefulSet now computes and reuses its initial cluster configuration, injects pod and namespace identity into the restore init container, and places etcd-init before reset-member. The restore script passes explicit member and cluster settings to etcdutl and etcdctl. Tests cover the injected environment variables, init-container ordering, and a HostedControlPlane fixture with snapshot restoration enabled.

Sequence Diagram(s)

sequenceDiagram
  participant StatefulSetAdapter
  participant EtcdInitContainer
  participant SnapshotTool
  StatefulSetAdapter->>EtcdInitContainer: Start before reset-member
  EtcdInitContainer->>SnapshotTool: Restore snapshot with explicit cluster identity
  SnapshotTool-->>EtcdInitContainer: Stage restored data in /var/lib/restore
Loading

Possibly related PRs

  • openshift/hypershift#8871: Both changes modify etcd StatefulSet adaptation; that PR adds TLS profile-derived settings for etcd containers.

Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 error)

Check name Status Explanation Resolution
Container-Privileges ❌ Error The new EtcdRestore fixture for kube-controller-manager embeds a recycler pod spec with securityContext.runAsUser: 0, i.e. root, with no justification. Remove or justify the root runAsUser: 0 setting in the manifest/fixture, or avoid adding it to the PR if it isn’t part of the intended change.
✅ Passed checks (10 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed New/changed Ginkgo titles are static strings; no pod/namespace/UUID/date/IP or other run-varying values appear in test names.
Test Structure And Quality ✅ Passed PASS: The new/updated tests are small table-driven unit tests, each subtest checks one behavior, and they don’t create cluster resources or use indefinite waits.
Topology-Aware Scheduling Compatibility ✅ Passed Changes only add restore env vars and init-container ordering; no topology-based scheduling constraints were introduced.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo e2e tests were added; the touched tests are unit tests, and I found no new IPv4-only or public-internet assumptions in the added code.
No-Weak-Crypto ✅ Passed Changed files only add etcd restore/init wiring and tests; no MD5/SHA1/DES/RC4/3DES/Blowfish/ECB, custom crypto, or secret/token comparisons were introduced.
No-Sensitive-Data-In-Logs ✅ Passed The patch adds only generic status/error echoes; it does not log restore URLs, namespaces, tokens, hostnames, or customer data.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: fixing etcd initialization issues during snapshot restore.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@openshift-ci openshift-ci Bot added area/control-plane-operator Indicates the PR includes changes for the control plane operator - in an OCP release and removed do-not-merge/needs-area labels Jul 21, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller_test.go (1)

1142-1145: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Use the required test-case description format.

Rename this case to When etcd snapshot restore is configured, it should reconcile the expected components.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller_test.go`
around lines 1142 - 1145, Rename the test case in the relevant test-case table
from “Default feature set, etcd snapshot restore” to “When etcd snapshot restore
is configured, it should reconcile the expected components,” without changing
its featureSet, subDirSuffix, or test behavior.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In
`@control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller_test.go`:
- Around line 1142-1145: Rename the test case in the relevant test-case table
from “Default feature set, etcd snapshot restore” to “When etcd snapshot restore
is configured, it should reconcile the expected components,” without changing
its featureSet, subDirSuffix, or test behavior.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 32129925-6bcc-42aa-afcd-854baa0dae02

📥 Commits

Reviewing files that changed from the base of the PR and between 0a7e9d4 and bee7b14.

📒 Files selected for processing (4)
  • control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller_test.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/etcd/etcd-init.sh
  • control-plane-operator/controllers/hostedcontrolplane/v2/etcd/etcd_test.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/etcd/statefulset.go

@tony-schndr
tony-schndr force-pushed the fix/etcd-snapshot-restore-init branch from bee7b14 to 62eb783 Compare July 21, 2026 18:59
@openshift-ci openshift-ci Bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jul 21, 2026
@tony-schndr
tony-schndr force-pushed the fix/etcd-snapshot-restore-init branch from 62eb783 to 40ce74a Compare July 21, 2026 19:07
@codecov

codecov Bot commented Jul 21, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 44.53%. Comparing base (144cca9) to head (6e60bfa).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #9048      +/-   ##
==========================================
+ Coverage   44.51%   44.53%   +0.01%     
==========================================
  Files         774      774              
  Lines       96997    97016      +19     
==========================================
+ Hits        43179    43205      +26     
+ Misses      50830    50824       -6     
+ Partials     2988     2987       -1     
Files with missing lines Coverage Δ
...trollers/hostedcontrolplane/v2/etcd/statefulset.go 80.23% <100.00%> (+6.37%) ⬆️

... and 1 file with indirect coverage changes

Flag Coverage Δ
cmd-support 38.39% <ø> (ø)
cpo-hostedcontrolplane 47.32% <100.00%> (+0.09%) ⬆️
cpo-other 45.25% <ø> (ø)
hypershift-operator 54.45% <ø> (ø)
other 32.64% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@control-plane-operator/controllers/hostedcontrolplane/v2/etcd/etcd-init.sh`:
- Around line 26-40: Add fail-fast handling to the etcd-init script before the
restore branches, such as enabling errexit with set -e, so failures from either
the etcdutl or etcdctl snapshot restore commands stop execution. Ensure the
subsequent promotion of /var/lib/restore into /var/lib/data cannot run after a
partial or failed restore.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 7464c0d5-025d-49c5-b037-2d3b3165646d

📥 Commits

Reviewing files that changed from the base of the PR and between 62eb783 and 40ce74a.

📒 Files selected for processing (4)
  • control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller_test.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/etcd/etcd-init.sh
  • control-plane-operator/controllers/hostedcontrolplane/v2/etcd/etcd_test.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/etcd/statefulset.go
🚧 Files skipped from review as they are similar to previous changes (3)
  • control-plane-operator/controllers/hostedcontrolplane/v2/etcd/statefulset.go
  • control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller_test.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/etcd/etcd_test.go

Comment on lines +26 to +40
etcdutl snapshot restore /tmp/snapshot \
--data-dir=/var/lib/restore \
--name "${HOSTNAME}" \
--initial-advertise-peer-urls "${PEER_URL}" \
--initial-cluster "${ETCD_INITIAL_CLUSTER}" \
--initial-cluster-token "${HCP_NAMESPACE}"
elif [ -x /usr/bin/etcdctl ]; then
echo "INFO: using etcdctl (etcd 3.5.x)"
env ETCDCTL_API=3 /usr/bin/etcdctl -w table snapshot status /tmp/snapshot
env ETCDCTL_API=3 /usr/bin/etcdctl snapshot restore /tmp/snapshot --data-dir=/var/lib/restore
env ETCDCTL_API=3 /usr/bin/etcdctl snapshot restore /tmp/snapshot \
--data-dir=/var/lib/restore \
--name "${HOSTNAME}" \
--initial-advertise-peer-urls "${PEER_URL}" \
--initial-cluster "${ETCD_INITIAL_CLUSTER}" \
--initial-cluster-token "${HCP_NAMESPACE}"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Do not promote a failed or partial restore.

This script does not enable errexit or check either restore command’s exit status. If etcdutl or etcdctl creates partial contents and then fails, Lines [46-47] still move that incomplete database into /var/lib/data, potentially causing etcd corruption or a CrashLoopBackOff. Add set -e near the top or explicitly abort when either restore command fails.

Proposed minimal fix
+set -euo pipefail
+
 # If /var/lib/data is not empty we exit early, since this means an etcd database already exists
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
etcdutl snapshot restore /tmp/snapshot \
--data-dir=/var/lib/restore \
--name "${HOSTNAME}" \
--initial-advertise-peer-urls "${PEER_URL}" \
--initial-cluster "${ETCD_INITIAL_CLUSTER}" \
--initial-cluster-token "${HCP_NAMESPACE}"
elif [ -x /usr/bin/etcdctl ]; then
echo "INFO: using etcdctl (etcd 3.5.x)"
env ETCDCTL_API=3 /usr/bin/etcdctl -w table snapshot status /tmp/snapshot
env ETCDCTL_API=3 /usr/bin/etcdctl snapshot restore /tmp/snapshot --data-dir=/var/lib/restore
env ETCDCTL_API=3 /usr/bin/etcdctl snapshot restore /tmp/snapshot \
--data-dir=/var/lib/restore \
--name "${HOSTNAME}" \
--initial-advertise-peer-urls "${PEER_URL}" \
--initial-cluster "${ETCD_INITIAL_CLUSTER}" \
--initial-cluster-token "${HCP_NAMESPACE}"
set -euo pipefail
etcdutl snapshot restore /tmp/snapshot \
--data-dir=/var/lib/restore \
--name "${HOSTNAME}" \
--initial-advertise-peer-urls "${PEER_URL}" \
--initial-cluster "${ETCD_INITIAL_CLUSTER}" \
--initial-cluster-token "${HCP_NAMESPACE}"
elif [ -x /usr/bin/etcdctl ]; then
echo "INFO: using etcdctl (etcd 3.5.x)"
env ETCDCTL_API=3 /usr/bin/etcdctl -w table snapshot status /tmp/snapshot
env ETCDCTL_API=3 /usr/bin/etcdctl snapshot restore /tmp/snapshot \
--data-dir=/var/lib/restore \
--name "${HOSTNAME}" \
--initial-advertise-peer-urls "${PEER_URL}" \
--initial-cluster "${ETCD_INITIAL_CLUSTER}" \
--initial-cluster-token "${HCP_NAMESPACE}"
🧰 Tools
🪛 ast-grep (0.44.1)

[warning] 33-33: Writing to or reading from a hardcoded, predictable path under /tmp is vulnerable to symlink and TOCTOU attacks: a local attacker can pre-create the file (or a symlink pointing elsewhere) and hijack or corrupt the contents. Generate a unique, unpredictable temporary file with mktemp instead, e.g. tmpfile="$(mktemp)" (or mktemp -d for directories) and reference "$tmpfile".
Context: /tmp/snapshot
Note: [CWE-377] Insecure Temporary File.

(predictable-tmp-file-bash)


[warning] 34-34: Writing to or reading from a hardcoded, predictable path under /tmp is vulnerable to symlink and TOCTOU attacks: a local attacker can pre-create the file (or a symlink pointing elsewhere) and hijack or corrupt the contents. Generate a unique, unpredictable temporary file with mktemp instead, e.g. tmpfile="$(mktemp)" (or mktemp -d for directories) and reference "$tmpfile".
Context: /tmp/snapshot
Note: [CWE-377] Insecure Temporary File.

(predictable-tmp-file-bash)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@control-plane-operator/controllers/hostedcontrolplane/v2/etcd/etcd-init.sh`
around lines 26 - 40, Add fail-fast handling to the etcd-init script before the
restore branches, such as enabling errexit with set -e, so failures from either
the etcdutl or etcdctl snapshot restore commands stop execution. Ensure the
subsequent promotion of /var/lib/restore into /var/lib/data cannot run after a
partial or failed restore.

@tony-schndr
tony-schndr force-pushed the fix/etcd-snapshot-restore-init branch 2 times, most recently from c77b637 to 859b305 Compare July 22, 2026 15:08
@openshift-ci openshift-ci Bot added area/platform/aws PR/issue for AWS (AWSPlatform) platform area/platform/azure PR/issue for Azure (AzurePlatform) platform area/platform/gcp PR/issue for GCP (GCPPlatform) platform area/platform/kubevirt PR/issue for KubeVirt (KubevirtPlatform) platform area/platform/openstack PR/issue for OpenStack (OpenStackPlatform) platform area/platform/powervs PR/issue for PowerVS (PowerVSPlatform) platform labels Jul 22, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
control-plane-operator/controllers/hostedcontrolplane/v2/etcd/etcd-init.sh (1)

26-40: 🩺 Stability & Availability | 🟠 Major

Do not promote a failed or partial restore.

The previous finding remains valid: if etcdutl or etcdctl fails, execution can still reach Line [46] and move incomplete contents into /var/lib/data. Add fail-fast handling or explicit checks around both restore commands before promotion.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@control-plane-operator/controllers/hostedcontrolplane/v2/etcd/etcd-init.sh`
around lines 26 - 40, Update the restore branches in the etcdutl/etcdctl
selection to fail immediately when either snapshot restore command fails, before
execution can reach the promotion that moves contents into /var/lib/data. Enable
fail-fast behavior or explicitly check each restore command’s exit status, while
preserving the existing status inspection and restore arguments.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Duplicate comments:
In `@control-plane-operator/controllers/hostedcontrolplane/v2/etcd/etcd-init.sh`:
- Around line 26-40: Update the restore branches in the etcdutl/etcdctl
selection to fail immediately when either snapshot restore command fails, before
execution can reach the promotion that moves contents into /var/lib/data. Enable
fail-fast behavior or explicitly check each restore command’s exit status, while
preserving the existing status inspection and restore arguments.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 73319c35-161d-469e-9fa1-cfff9f4fbdc2

📥 Commits

Reviewing files that changed from the base of the PR and between c77b637 and 859b305.

⛔ Files ignored due to path filters (240)
  • control-plane-operator/controllers/hostedcontrolplane/testdata/aws-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_aws_cloud_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/aws-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_aws_cloud_controller_manager_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/aws-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_aws_cloud_controller_manager_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/aws-node-termination-handler/EtcdRestore/zz_fixture_TestControlPlaneComponents_aws_node_termination_handler_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/aws-node-termination-handler/EtcdRestore/zz_fixture_TestControlPlaneComponents_aws_node_termination_handler_creds_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/aws-node-termination-handler/EtcdRestore/zz_fixture_TestControlPlaneComponents_aws_node_termination_handler_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/azure-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_azure_cloud_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/azure-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_azure_cloud_config_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/azure-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_azure_cloud_controller_manager_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/azure-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_azure_cloud_controller_manager_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/azure-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_azure_cloud_controller_manager_serviceaccount.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/catalog-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_catalog_operator_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/catalog-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_catalog_operator_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/catalog-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_catalog_operator_metrics_service.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/catalog-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_catalog_operator_servicemonitor.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/certified-operators-catalog/EtcdRestore/zz_fixture_TestControlPlaneComponents_certified_operators_catalog_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/certified-operators-catalog/EtcdRestore/zz_fixture_TestControlPlaneComponents_certified_operators_catalog_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/certified-operators-catalog/EtcdRestore/zz_fixture_TestControlPlaneComponents_certified_operators_service.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cloud-credential-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cloud_credential_operator_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cloud-credential-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cloud_credential_operator_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cloud-credential-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cloud_credential_operator_service_account_kubeconfig_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-autoscaler/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_autoscaler_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-autoscaler/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_autoscaler_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-autoscaler/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_autoscaler_podmonitor.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-autoscaler/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_autoscaler_role.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-autoscaler/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_autoscaler_rolebinding.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-autoscaler/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_autoscaler_serviceaccount.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-image-registry-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_image_registry_operator_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-image-registry-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_image_registry_operator_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-image-registry-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_image_registry_operator_podmonitor.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-image-registry-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_image_registry_controller_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-network-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_network_operator_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-network-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_network_operator_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-network-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_network_operator_role.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-network-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_network_operator_rolebinding.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-network-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_network_operator_serviceaccount.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-node-tuning-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_node_tuning_operator_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-node-tuning-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_node_tuning_operator_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-node-tuning-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_node_tuning_operator_role.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-node-tuning-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_node_tuning_operator_rolebinding.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-node-tuning-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_node_tuning_operator_serviceaccount.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-node-tuning-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_node_tuning_operator_service.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-node-tuning-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_node_tuning_operator_servicemonitor.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-policy-controller/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_policy_controller_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-policy-controller/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_policy_controller_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-policy-controller/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_policy_controller_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-storage-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_storage_operator_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-storage-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_storage_operator_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-storage-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_storage_operator_role.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-storage-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_storage_operator_rolebinding.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-storage-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_storage_operator_serviceaccount.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_version_operator_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_version_operator_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_version_operator_service.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_cluster_version_operator_servicemonitor.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/community-operators-catalog/EtcdRestore/zz_fixture_TestControlPlaneComponents_community_operators_catalog_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/community-operators-catalog/EtcdRestore/zz_fixture_TestControlPlaneComponents_community_operators_catalog_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/community-operators-catalog/EtcdRestore/zz_fixture_TestControlPlaneComponents_community_operators_service.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/control-plane-pki-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_control_plane_pki_operator_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/control-plane-pki-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_control_plane_pki_operator_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/control-plane-pki-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_control_plane_pki_operator_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/control-plane-pki-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_control_plane_pki_operator_role.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/control-plane-pki-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_control_plane_pki_operator_rolebinding.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/control-plane-pki-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_control_plane_pki_operator_serviceaccount.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/csi-snapshot-controller-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_csi_snapshot_controller_operator_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/csi-snapshot-controller-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_csi_snapshot_controller_operator_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/csi-snapshot-controller-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_csi_snapshot_controller_operator_role_role.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/csi-snapshot-controller-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_csi_snapshot_controller_operator_role_rolebinding.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/csi-snapshot-controller-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_csi_snapshot_controller_operator_serviceaccount.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/dns-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_dns_operator_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/dns-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_dns_operator_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/dns-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_dns_operator_service_account_kubeconfig_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/endpoint-resolver/EtcdRestore/zz_fixture_TestControlPlaneComponents_endpoint_resolver_ca_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/endpoint-resolver/EtcdRestore/zz_fixture_TestControlPlaneComponents_endpoint_resolver_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/endpoint-resolver/EtcdRestore/zz_fixture_TestControlPlaneComponents_endpoint_resolver_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/endpoint-resolver/EtcdRestore/zz_fixture_TestControlPlaneComponents_endpoint_resolver_role.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/endpoint-resolver/EtcdRestore/zz_fixture_TestControlPlaneComponents_endpoint_resolver_rolebinding.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/endpoint-resolver/EtcdRestore/zz_fixture_TestControlPlaneComponents_endpoint_resolver_service.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/endpoint-resolver/EtcdRestore/zz_fixture_TestControlPlaneComponents_endpoint_resolver_serviceaccount.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/endpoint-resolver/EtcdRestore/zz_fixture_TestControlPlaneComponents_endpoint_resolver_serving_cert_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/etcd/EtcdRestore/zz_fixture_TestControlPlaneComponents_etcd_client_service.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/etcd/EtcdRestore/zz_fixture_TestControlPlaneComponents_etcd_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/etcd/EtcdRestore/zz_fixture_TestControlPlaneComponents_etcd_discovery_service.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/etcd/EtcdRestore/zz_fixture_TestControlPlaneComponents_etcd_poddisruptionbudget.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/etcd/EtcdRestore/zz_fixture_TestControlPlaneComponents_etcd_self_register_role.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/etcd/EtcdRestore/zz_fixture_TestControlPlaneComponents_etcd_self_register_rolebinding.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/etcd/EtcdRestore/zz_fixture_TestControlPlaneComponents_etcd_serviceaccount.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/etcd/EtcdRestore/zz_fixture_TestControlPlaneComponents_etcd_servicemonitor.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/etcd/EtcdRestore/zz_fixture_TestControlPlaneComponents_etcd_statefulset.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/featuregate-generator/EtcdRestore/zz_fixture_TestControlPlaneComponents_featuregate_generator_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/featuregate-generator/EtcdRestore/zz_fixture_TestControlPlaneComponents_featuregate_generator_job.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/gcp-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_gcp_cloud_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/gcp-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_gcp_cloud_controller_manager_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/gcp-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_gcp_cloud_controller_manager_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/hosted-cluster-config-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_hosted_cluster_config_operator_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/hosted-cluster-config-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_hosted_cluster_config_operator_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/hosted-cluster-config-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_hosted_cluster_config_operator_podmonitor.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/hosted-cluster-config-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_hosted_cluster_config_operator_role.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/hosted-cluster-config-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_hosted_cluster_config_operator_rolebinding.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/hosted-cluster-config-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_hosted_cluster_config_operator_serviceaccount.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/ignition-server-proxy/EtcdRestore/zz_fixture_TestControlPlaneComponents_ignition_server_proxy_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/ignition-server-proxy/EtcdRestore/zz_fixture_TestControlPlaneComponents_ignition_server_proxy_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/ignition-server-proxy/EtcdRestore/zz_fixture_TestControlPlaneComponents_ignition_server_proxy_service.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/ignition-server/EtcdRestore/zz_fixture_TestControlPlaneComponents_ignition_server_ca_cert_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/ignition-server/EtcdRestore/zz_fixture_TestControlPlaneComponents_ignition_server_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/ignition-server/EtcdRestore/zz_fixture_TestControlPlaneComponents_ignition_server_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/ignition-server/EtcdRestore/zz_fixture_TestControlPlaneComponents_ignition_server_podmonitor.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/ignition-server/EtcdRestore/zz_fixture_TestControlPlaneComponents_ignition_server_role.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/ignition-server/EtcdRestore/zz_fixture_TestControlPlaneComponents_ignition_server_rolebinding.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/ignition-server/EtcdRestore/zz_fixture_TestControlPlaneComponents_ignition_server_route.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/ignition-server/EtcdRestore/zz_fixture_TestControlPlaneComponents_ignition_server_service.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/ignition-server/EtcdRestore/zz_fixture_TestControlPlaneComponents_ignition_server_serviceaccount.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/ignition-server/EtcdRestore/zz_fixture_TestControlPlaneComponents_ignition_server_serving_cert_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/ingress-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_ingress_operator_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/ingress-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_ingress_operator_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/ingress-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_ingress_operator_podmonitor.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/ingress-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_ingress_operator_service_account_kubeconfig_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/konnectivity-agent/EtcdRestore/zz_fixture_TestControlPlaneComponents_konnectivity_agent_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/konnectivity-agent/EtcdRestore/zz_fixture_TestControlPlaneComponents_konnectivity_agent_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/konnectivity-agent/EtcdRestore/zz_fixture_TestControlPlaneComponents_konnectivity_agent_serviceaccount.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_admin_kubeconfig_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_auth_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_aws_pod_identity_webhook_kubeconfig_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_bootstrap_kubeconfig_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_hcco_kubeconfig_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_kas_audit_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_kas_authentication_token_webhook_config_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_kas_bootstrap_container_kubeconfig_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_kas_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_kas_egress_selector_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_konnectivity_server_local_service.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_kube_apiserver_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_kube_apiserver_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_kube_apiserver_poddisruptionbudget.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_kube_apiserver_servicemonitor.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_kubeconfig_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_localhost_kubeconfig_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_oauth_metadata_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_recording_rules_prometheusrule.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_service_network_admin_kubeconfig_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_kcm_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_kube_controller_manager_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_kube_controller_manager_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_kube_controller_manager_kubeconfig_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_kube_controller_manager_service.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_kube_controller_manager_servicemonitor.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_recycler_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-scheduler/EtcdRestore/zz_fixture_TestControlPlaneComponents_kube_scheduler_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-scheduler/EtcdRestore/zz_fixture_TestControlPlaneComponents_kube_scheduler_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-scheduler/EtcdRestore/zz_fixture_TestControlPlaneComponents_kube_scheduler_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-scheduler/EtcdRestore/zz_fixture_TestControlPlaneComponents_kube_scheduler_kubeconfig_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-scheduler/EtcdRestore/zz_fixture_TestControlPlaneComponents_kube_scheduler_service.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-scheduler/EtcdRestore/zz_fixture_TestControlPlaneComponents_kube_scheduler_servicemonitor.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-storage-version-migrator/EtcdRestore/zz_fixture_TestControlPlaneComponents_kube_storage_version_migrator_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kube-storage-version-migrator/EtcdRestore/zz_fixture_TestControlPlaneComponents_kube_storage_version_migrator_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kubevirt-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_kubevirt_cloud_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kubevirt-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_kubevirt_cloud_controller_manager_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kubevirt-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_kubevirt_cloud_controller_manager_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kubevirt-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_kubevirt_cloud_controller_manager_role.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kubevirt-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_kubevirt_cloud_controller_manager_rolebinding.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kubevirt-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_kubevirt_cloud_controller_manager_serviceaccount.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kubevirt-csi-controller/EtcdRestore/zz_fixture_TestControlPlaneComponents_driver_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kubevirt-csi-controller/EtcdRestore/zz_fixture_TestControlPlaneComponents_kubevirt_csi_controller_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kubevirt-csi-controller/EtcdRestore/zz_fixture_TestControlPlaneComponents_kubevirt_csi_controller_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kubevirt-csi-controller/EtcdRestore/zz_fixture_TestControlPlaneComponents_kubevirt_csi_controller_service_account_kubeconfig_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kubevirt-csi-controller/EtcdRestore/zz_fixture_TestControlPlaneComponents_kubevirt_csi_role.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kubevirt-csi-controller/EtcdRestore/zz_fixture_TestControlPlaneComponents_kubevirt_csi_rolebinding.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/kubevirt-csi-controller/EtcdRestore/zz_fixture_TestControlPlaneComponents_kubevirt_csi_serviceaccount.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/machine-approver/EtcdRestore/zz_fixture_TestControlPlaneComponents_machine_approver_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/machine-approver/EtcdRestore/zz_fixture_TestControlPlaneComponents_machine_approver_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/machine-approver/EtcdRestore/zz_fixture_TestControlPlaneComponents_machine_approver_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/machine-approver/EtcdRestore/zz_fixture_TestControlPlaneComponents_machine_approver_role.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/machine-approver/EtcdRestore/zz_fixture_TestControlPlaneComponents_machine_approver_rolebinding.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/machine-approver/EtcdRestore/zz_fixture_TestControlPlaneComponents_machine_approver_serviceaccount.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/metrics-proxy/EtcdRestore/zz_fixture_TestControlPlaneComponents_metrics_proxy_ca_cert_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/metrics-proxy/EtcdRestore/zz_fixture_TestControlPlaneComponents_metrics_proxy_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/metrics-proxy/EtcdRestore/zz_fixture_TestControlPlaneComponents_metrics_proxy_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/metrics-proxy/EtcdRestore/zz_fixture_TestControlPlaneComponents_metrics_proxy_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/metrics-proxy/EtcdRestore/zz_fixture_TestControlPlaneComponents_metrics_proxy_route.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/metrics-proxy/EtcdRestore/zz_fixture_TestControlPlaneComponents_metrics_proxy_service.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/metrics-proxy/EtcdRestore/zz_fixture_TestControlPlaneComponents_metrics_proxy_serviceaccount.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/metrics-proxy/EtcdRestore/zz_fixture_TestControlPlaneComponents_metrics_proxy_serving_cert_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/oauth-openshift/EtcdRestore/zz_fixture_TestControlPlaneComponents_oauth_openshift_audit_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/oauth-openshift/EtcdRestore/zz_fixture_TestControlPlaneComponents_oauth_openshift_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/oauth-openshift/EtcdRestore/zz_fixture_TestControlPlaneComponents_oauth_openshift_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/oauth-openshift/EtcdRestore/zz_fixture_TestControlPlaneComponents_oauth_openshift_default_error_template_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/oauth-openshift/EtcdRestore/zz_fixture_TestControlPlaneComponents_oauth_openshift_default_login_template_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/oauth-openshift/EtcdRestore/zz_fixture_TestControlPlaneComponents_oauth_openshift_default_provider_selection_template_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/oauth-openshift/EtcdRestore/zz_fixture_TestControlPlaneComponents_oauth_openshift_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/oauth-openshift/EtcdRestore/zz_fixture_TestControlPlaneComponents_oauth_openshift_poddisruptionbudget.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/oauth-openshift/EtcdRestore/zz_fixture_TestControlPlaneComponents_oauth_openshift_session_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/olm-collect-profiles/EtcdRestore/zz_fixture_TestControlPlaneComponents_olm_collect_profiles_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/olm-collect-profiles/EtcdRestore/zz_fixture_TestControlPlaneComponents_olm_collect_profiles_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/olm-collect-profiles/EtcdRestore/zz_fixture_TestControlPlaneComponents_olm_collect_profiles_cronjob.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/olm-collect-profiles/EtcdRestore/zz_fixture_TestControlPlaneComponents_olm_collect_profiles_role.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/olm-collect-profiles/EtcdRestore/zz_fixture_TestControlPlaneComponents_olm_collect_profiles_rolebinding.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/olm-collect-profiles/EtcdRestore/zz_fixture_TestControlPlaneComponents_olm_collect_profiles_serviceaccount.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/olm-collect-profiles/EtcdRestore/zz_fixture_TestControlPlaneComponents_pprof_cert_secret.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/olm-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_olm_operator_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/olm-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_olm_operator_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/olm-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_olm_operator_metrics_service.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/olm-operator/EtcdRestore/zz_fixture_TestControlPlaneComponents_olm_operator_servicemonitor.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_openshift_apiserver_audit_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_openshift_apiserver_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_openshift_apiserver_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_openshift_apiserver_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_openshift_apiserver_poddisruptionbudget.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_openshift_apiserver_servicemonitor.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_openshift_controller_manager_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_openshift_controller_manager_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_openshift_controller_manager_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_openshift_controller_manager_service.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_openshift_controller_manager_servicemonitor.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-oauth-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_openshift_oauth_apiserver_audit_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-oauth-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_openshift_oauth_apiserver_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-oauth-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_openshift_oauth_apiserver_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-oauth-apiserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_openshift_oauth_apiserver_poddisruptionbudget.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-route-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_openshift_route_controller_manager_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-route-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_openshift_route_controller_manager_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-route-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_openshift_route_controller_manager_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-route-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_openshift_route_controller_manager_service.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openshift-route-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_openshift_route_controller_manager_servicemonitor.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openstack-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_openstack_cloud_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openstack-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_openstack_cloud_controller_manager_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openstack-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_openstack_cloud_controller_manager_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/openstack-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_openstack_trusted_ca_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/packageserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_packageserver_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/packageserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_packageserver_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/packageserver/EtcdRestore/zz_fixture_TestControlPlaneComponents_packageserver_pdb_poddisruptionbudget.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/powervs-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_ccm_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/powervs-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_powervs_cloud_controller_manager_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/powervs-cloud-controller-manager/EtcdRestore/zz_fixture_TestControlPlaneComponents_powervs_cloud_controller_manager_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/redhat-marketplace-catalog/EtcdRestore/zz_fixture_TestControlPlaneComponents_redhat_marketplace_catalog_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/redhat-marketplace-catalog/EtcdRestore/zz_fixture_TestControlPlaneComponents_redhat_marketplace_catalog_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/redhat-marketplace-catalog/EtcdRestore/zz_fixture_TestControlPlaneComponents_redhat_marketplace_service.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/redhat-operators-catalog/EtcdRestore/zz_fixture_TestControlPlaneComponents_catalogs_imagestream.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/redhat-operators-catalog/EtcdRestore/zz_fixture_TestControlPlaneComponents_redhat_operators_catalog_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/redhat-operators-catalog/EtcdRestore/zz_fixture_TestControlPlaneComponents_redhat_operators_catalog_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/redhat-operators-catalog/EtcdRestore/zz_fixture_TestControlPlaneComponents_redhat_operators_service.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/router/EtcdRestore/zz_fixture_TestControlPlaneComponents_router_controlplanecomponent.yaml is excluded by !**/testdata/**
📒 Files selected for processing (4)
  • control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller_test.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/etcd/etcd-init.sh
  • control-plane-operator/controllers/hostedcontrolplane/v2/etcd/etcd_test.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/etcd/statefulset.go
🚧 Files skipped from review as they are similar to previous changes (3)
  • control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller_test.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/etcd/statefulset.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/etcd/etcd_test.go

@tony-schndr
tony-schndr marked this pull request as ready for review July 22, 2026 16:22
@openshift-ci openshift-ci Bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jul 22, 2026
@openshift-ci
openshift-ci Bot requested review from bryan-cox and enxebre July 22, 2026 16:22
@bryan-cox

Copy link
Copy Markdown
Member

@tony-schndr is all the 16k lines of changes really needed to fix this bug?

Could you please use the restructure commit skill in the hypershift repo to split up the changes into appropriate commits?; that would make it much easier to review.

@jparrill

Copy link
Copy Markdown
Contributor

/retitle OCPBUGS-99534: etcd initialization bugs after etcdctl snapshot restore

@openshift-ci openshift-ci Bot changed the title fix: etcd initialization bugs after etcdctl snapshot restore OCPBUGS-99534: etcd initialization bugs after etcdctl snapshot restore Jul 23, 2026
@openshift-ci-robot openshift-ci-robot added jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. labels Jul 23, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@tony-schndr: This pull request references Jira Issue OCPBUGS-99534, which is valid.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (5.0.0) matches configured target version for branch (5.0.0)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)

The bug has been updated to refer to the pull request using the external bug tracker.

Details

In response to this:

What this PR does / why we need it:

Fix etcd split brain caused by single member initialization.

  • Previously etcd members were being started without any information about the other members in the etcd cluster causing each member to be started individually. added --name --initial-advertise-peer-urls --initial-cluster --initial-cluster-token to etcdctl (and utl) snapshot restore to ensure etcd members are properly initialized during restore.

Fix member ID mismatch on snapshot restore by running etcd-init before reset-member.

  • Previously, reset-member ran first and, if the cluster was already up, would remove and re-add the local member with a new ID. etcd-init then restored the snapshot with the old member ID, causing a WAL/cluster membership mismatch and CrashLoopBackOff. Running etcd-init first ensures the data directory exists when reset-member runs, so it takes the no-op "member has data" path and leaves membership unchanged.

Which issue(s) this PR fixes:

Fixes OCPBUGS-99310

Special notes for your reviewer:

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

Summary by CodeRabbit

  • Bug Fixes
  • Improved managed etcd snapshot restoration so each pod restores with a unique peer identity and consistent initial cluster settings.
  • Corrected etcd StatefulSet init-container sequencing so snapshot restore runs before reset-member when restoration is enabled.
  • Tests
  • Added fixture coverage for the default feature set with etcd snapshot restore.
  • Expanded checks for generated etcd init-container environment values and added test coverage for restore-related init-container ordering.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@jparrill jparrill left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dropped a comment. Thanks!

expectedOrder: []string{"ensure-dns", "etcd-init", "reset-member"},
},
{
name: "When restoreSnapshotURL is not set, it should not add etcd-init",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice test — the two cases cover the main paths well. Two additions worth considering:

  1. EtcdSnapshotRestored=True with a restoreURL set: verifies the guard clause at statefulset.go:136 prevents re-adding etcd-init after a successful restore. This is the most critical path — if it regresses, a reconcile loop could re-trigger a snapshot restore on an already-running cluster.

  2. reset-member absent from init containers: the code falls back to append-at-end (insertIdx = len(...)), which is reasonable but untested. A one-liner case with baseInitContainers: []Container{{Name: "ensure-dns"}} would document that behavior.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added the recommended test cases, thanks!

@tony-schndr
tony-schndr force-pushed the fix/etcd-snapshot-restore-init branch from 02cbb4c to 872d837 Compare July 23, 2026 14:25
@jparrill

Copy link
Copy Markdown
Contributor

/approve

@openshift-ci

openshift-ci Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: jparrill, tony-schndr

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jul 23, 2026
@sdminonne

Copy link
Copy Markdown
Contributor

/cc @sdminonne

@openshift-ci
openshift-ci Bot requested a review from sdminonne July 23, 2026 16:27
@jparrill

Copy link
Copy Markdown
Contributor

/rebase

@github-actions

Copy link
Copy Markdown

🤖 Rebasing PR onto main: workflow run

@sdminonne

Copy link
Copy Markdown
Contributor

@tony-schndr, I went through this after @jparrill and @bryan-cox review. So I've the impression I'm late at the party. I've really nothing to say except ultra nits stuff no worth mentioning.
As soon it's green I'm 100% to tag it lgtm. TY!

@github-actions

Copy link
Copy Markdown

🤖 Rebasing PR onto main: workflow run

Fixes OCPBUGS-99310

Fix etcd split brain caused by single member initialization.
- Previously etcd members were started without information about other
  cluster members, causing each to initialize individually. Added
  --name, --initial-advertise-peer-urls, --initial-cluster, and
  --initial-cluster-token to etcdctl (and utl) snapshot restore to
  ensure members are properly initialized during restore.

Fix member ID mismatch on snapshot restore by running etcd-init before reset-member.
- Previously, reset-member ran first and, if the cluster was already
  up, would remove and re-add the local member with a new ID. etcd-init
  then restored the snapshot with the old member ID, causing a
  WAL/cluster membership mismatch and CrashLoopBackOff. Running
  etcd-init first ensures the data directory exists when reset-member
  runs, so it takes the no-op "member has data" path and leaves
  membership unchanged.

Signed-off-by: Tony Schneider <tschneid@redhat.com>
@tony-schndr
tony-schndr force-pushed the fix/etcd-snapshot-restore-init branch from 872d837 to 6b1fa87 Compare July 23, 2026 17:12
@github-actions
github-actions Bot force-pushed the fix/etcd-snapshot-restore-init branch from 6b1fa87 to 59c32eb Compare July 23, 2026 17:28
Pass --bump-revision 1000000000 --mark-compacted to etcdutl and etcdctl
snapshot restore invocations so that post-restore revisions are always
greater than any revision the cluster has seen, and all watches are
terminated on startup. Without this, informer caches may observe stale
revisions from before the snapshot was taken.

Ref: https://etcd.io/docs/v3.5/op-guide/recovery/

Signed-off-by: Tony Schneider <tschneid@redhat.com>
… tests

Signed-off-by: Tony Schneider <tschneid@redhat.com>
@tony-schndr
tony-schndr force-pushed the fix/etcd-snapshot-restore-init branch from 59c32eb to 6e60bfa Compare July 23, 2026 21:00
@openshift-ci

openshift-ci Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

@tony-schndr: all tests passed!

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. area/control-plane-operator Indicates the PR includes changes for the control plane operator - in an OCP release area/platform/aws PR/issue for AWS (AWSPlatform) platform area/platform/azure PR/issue for Azure (AzurePlatform) platform area/platform/gcp PR/issue for GCP (GCPPlatform) platform area/platform/kubevirt PR/issue for KubeVirt (KubevirtPlatform) platform area/platform/openstack PR/issue for OpenStack (OpenStackPlatform) platform area/platform/powervs PR/issue for PowerVS (PowerVSPlatform) platform jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants